// mycomponent/movable-service/movable-service.js
import { debounce } from '../../utils/util'
Component({

  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    positionX: 0,
    positionY: 0,
    timer: null
  },

  /**
   * 生命周期
   */
  lifetimes: {
    // 在组件实例进入页面节点树时执行
    attached: function() {
      this.setPosition()
    }
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * 设置morn定位
     */
    setPosition: function() {
      // 先从storage查询
      let servicePosition = null
      try {
        servicePosition = wx.getStorageSync('servicePosition')
      } catch (error) {
        console.log(error)
      }
      if (servicePosition) {
        const {x, y} = JSON.parse(servicePosition)
        this.setData({
          positionX: x,
          positionY: y
        })
        return
      }
      // 根据设备尺寸设置组件默认位置(右下角)
      const _this = this
      wx.getSystemInfo({
        success: function(res) {
          const { windowWidth, windowHeight, screenHeight, safeArea } = res
          const { bottom } = safeArea
          _this.setData({
            positionX: windowWidth - 50 -20,
            positionY: windowHeight - 50 - 70 - (screenHeight - bottom)
          })
        }
      })
    },

    /**
     * 客服组件移动
     * @param {Object} e 
     */
    changeHandle: function(e) {
      // 防抖
      if (this.timer) clearTimeout(this.timer);
      this.timer = setTimeout(() => {
        debounce(this.savePosition(e))
      }, 1000);
    },

    /**
     * 保存位置数据至storage
     * @param {Object} e 
     */
    savePosition: function(e) {
      const { x, y } = e.detail
      try {
        wx.setStorageSync('servicePosition', JSON.stringify({x, y}))
      } catch (error) {
        console.log(error)
      }
    }
  }
})